package avgCitySalary;

import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Partitioner;
import java.util.HashMap;
import org.apache.hadoop.io.DoubleWritable;

public class CityAvgSalaryPartition extends Partitioner<Text, DoubleWritable> {

    public static HashMap<String, Integer> cityMap = new HashMap<>();
    static {
        // 这里添加你想要分区的城市以及对应的分区编号，示例中列举了部分城市
        cityMap.put("北京", 0);
        cityMap.put("上海", 1);
        cityMap.put("广州", 2);
        cityMap.put("深圳", 3);
        cityMap.put("天津", 4);
        cityMap.put("武汉", 5);
        cityMap.put("南京", 6);
        cityMap.put("西安", 7);
        cityMap.put("成都", 8);
        cityMap.put("长沙", 9);
        cityMap.put("杭州", 10);
        cityMap.put("苏州", 11);
        cityMap.put("佛山", 12);
    }

    @Override
    public int getPartition(Text key, DoubleWritable value, int numPartitions) {
        // 根据map输出的key（城市名称）得到分区号
        Integer code = cityMap.get(key.toString());

        if (code!= null) {
            return code;
        } else {
            // 如果key对应的城市不在数据字典里面，分到其他分区（这里假设为13号分区）
            return 13;
        }
    }
}